package com.xiaoKe.zhonghzu.global.tool;


import java.io.Serializable;

public enum SensorType implements Serializable {
    TEMP("temp", "温度", 1, "(°C)"),
    HUMI("humi", "湿度", 2, "(%)"),
    CO2("co2", "CO₂", 3, "(ppm)"),
    NH3("nh3", "NH₃", 4, "(ppm)"),
    H2S("h2s", "H₂S", 5,  "(ppm)"),
    NP("np", "静压", 6, "(pa)"),
    VELOCITY("velocity", "风速", 7,"(m/s)"),
    OUT_TEMP("outTemp", "室外温度", 8,  "(°C)"),
    OUT_HUMI("outHumi", "室外湿度", 9, "(°C)"),
    THW("thw", "体感温度", 10,  "(°C)"),
    IUM("ium", "光照", 17,  "(Lx)"),
    ILLUMINATION("illumination", "光照强度U", 11, "(%)"),
    PM25("pm25", "pm2.5", 12, "(μg/m³)"),
    PM10("pm10", "pm10", 13,  "(μg/m³)"),
    VENT("vend", "通风量", 100, "(k·m³/h)"),
    vendGread("vendGread", "通风级别", 101,  ""),
    PH("ph", "ph", 14, "(ppm)"),
    CH4("ch4", "CH₄", 15, "(%VOL)"),
    water("water", "饮水量", 200 ,"(L)"),
    power("power", "用电量", 201, "(kwh)"),
    food("food", "采食量", 202,"(kg)"),
    addFood("addFood", "打料量", 203, "(kg)"),
    curFood("curFood", "余料量", 204,"(kg)"),
    gas("gas", "燃气", 205, "(m³)"),
    temp1("temp-0", "温度1", 300,  "(°C)"),
    temp2("temp-1", "温度2", 301,  "(°C)"),
    temp3("temp-2", "温度3", 302,  "(°C)"),
    temp4("temp-3", "温度4", 303,  "(°C)"),
    temp5("temp-4", "温度5", 304,  "(°C)"),
    temp6("temp-5", "温度6", 305,  "(°C)"),
    temp7("temp-6", "温度7", 306,  "(°C)"),
    temp8("temp-7", "温度8", 307,  "(°C)"),
    temp9("temp-8", "温度9", 308,  "(°C)"),
    temp10("temp-9", "温度10", 309,  "(°C)"),
    temp11("temp-10", "温度11", 310,  "(°C)"),
    temp12("temp-11", "温度12", 311,  "(°C)"),
    temp13("temp-12", "温度13", 312,  "(°C)"),
    temp14("temp-13", "温度14", 313,  "(°C)"),
    temp15("temp-14", "温度15", 314,  "(°C)"),
    temp16("temp-15", "温度16", 315,  "(°C)"),
    quiescentFan("quiescentFan", "定速风机", 401,  ""),
    variableFrequencyFan("variableFrequencyFan", "调速风机", 401,  ""),

    UNKNOWN("unknown", "未知类型", 255,  "");


    /**
     * 命令名
     */
    private String type;
    /**
     * 命令名汉字
     */
    private String name;
    /**
     * 命令值 报文用
     */
    private Integer value;
    /**
     * 单位
     */
    private String unit;


    SensorType(String type, String name, Integer value, String unit) {
        this.type = type;
        this.name = name;
        this.value = value;
        this.unit = unit;

    }

    public String getUnit() {
        return unit;
    }

    /**
     * 获取命令对应的汉字信息
     */
    public String getName() {
        return name;
    }

    /**
     * 获取命令值 组装报文中使用
     */
    public String getType() {
        return type;
    }

    /**
     * 获取命令对应的信息
     */
    public Integer getValue() {
        return value;
    }


    /**
     * 在switch中使用通常需要先获取枚举类型才判断
     * 因为case中是常量或者int、byte、short、char
     * 写其他代码编译是不通过的
     */
    public static SensorType
    getByCmdType(String type) {
        for (SensorType sensorType : values()) {
            if (sensorType.getType().equals(type)) {
                return sensorType;
            }
        }
        return UNKNOWN;
    }

}
